package ace.module.captcha.sms.api;

import ace.cmp.core.model.R;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * @author caspar
 * @date 2023/3/17 15:49 sms验证码
 */
public interface CaptchaSmsApi {

  /**
   * 发送短信验证码
   *
   * @param captchaSmsAppId 短信验证appid
   * @param phoneNumber     手机号码
   * @param code            验证码
   * @return code=0 is success,data is code=验证码
   */
  R<String> send(
      @Valid @NotNull Long captchaSmsAppId,
      @Valid @NotNull String phoneNumber,
      @Valid @NotBlank String code);

  /**
   * 验证短信验证码
   *
   * @param captchaSmsAppId 短信验证appid
   * @param phoneNumber     手机号码
   * @param code            验证码
   * @return code=0-验证通过 1-验证不通过 2-没有配置
   */
  R<Void> verify(
      @Valid @NotNull Long captchaSmsAppId,
      @Valid @NotBlank String phoneNumber,
      @Valid @NotBlank String code);

  /**
   * 验证短信验证码
   *
   * @param captchaSmsAppKey 短信验证appKey
   * @param phoneNumber      手机号码
   * @param code             验证码
   * @return code=0-验证通过 1-验证不通过 2-没有配置
   */
  R<Void> verify(
      @Valid @NotBlank String captchaSmsAppKey,
      @Valid @NotBlank String phoneNumber,
      @Valid @NotBlank String code);
}
